package Transforming_Observables

import (
	"fmt"
	"github.com/reactivex/rxgo/v2"
)

// 通过Key划分一个可观察集合可观察对象的组变成多个可观察集合，然后发布每个新的可观察集合，
func Demo_GroupBy() {
	fmt.Println("Demo_BufferWithCount###########################")
	// 按照数量打包 BufferWithCount
	count := 3
	observable := rxgo.Range(0, 10).GroupBy(count, func(item rxgo.Item) int {
		return item.V.(int) % count
	}, rxgo.WithBufferedChannel(10))

	for i := range observable.Observe() {
		fmt.Println("New observable:")

		for i := range i.V.(rxgo.Observable).Observe() {
			fmt.Printf("item: %v\n", i.V)
		}
	}

}
